package com.wicket.okrbff.web.contorller;

import com.wicket.okrbff.biz.service.PostTypeService;
import com.wicket.okrbff.biz.service.dto.req.*;
import com.wicket.okrbff.biz.service.dto.res.*;
import com.wicket.okrbff.common.ro.OkrResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.wicket.okrframework.integration.FwBasePostTypeClient;
import com.wicket.okrframework.integration.dto.QueryStationTypeListRespDto;
import com.wicket.okrframework.integration.dto.QueryStationTypeListReqDto;
import com.wicket.okrbff.biz.service.dto.common.BffOrgStationTypeDto;
import cn.hutool.core.bean.BeanUtil;
import java.util.stream.Collectors;
import com.wicket.okrbff.common.exception.Assert;
import com.wicket.okrframework.integration.dto.QueryStationTypeDetailRespDto;
import com.wicket.okrframework.integration.dto.QueryStationTypeDetailReqDto;
import com.wicket.okrframework.integration.FwBaseBatchClient;
import com.wicket.okrframework.integration.dto.QueryBaseBatchDetailRespDto;
import com.wicket.okrframework.integration.dto.QueryBaseBatchDetailReqDto;
import com.wicket.okrcomponent.integration.FwCompOffStateClient;
import com.wicket.okrcomponent.integration.dto.QueryStepDetailComBorderRespDto;
import com.wicket.okrcomponent.integration.dto.QueryStepDetailComBorderReqDto;
import com.wicket.okrframework.integration.dto.AddStationTypeRespDto;
import com.wicket.okrframework.integration.dto.AddStationTypeReqDto;
import com.wicket.okrframework.integration.dto.DeleteStationTypeRespDto;
import com.wicket.okrframework.integration.dto.DeleteStationTypeReqDto;
import com.wicket.okrframework.integration.dto.UpdateStationTypeRespDto;
import com.wicket.okrframework.integration.dto.UpdateStationTypeReqDto;
import com.wicket.okrframework.integration.dto.ReviseStationTypeRespDto;
import com.wicket.okrframework.integration.dto.ReviseStationTypeReqDto;
import com.wicket.okrframework.integration.dto.ArchiveStationTypeRespDto;
import com.wicket.okrframework.integration.dto.ArchiveStationTypeReqDto;
import com.wicket.okrframework.integration.dto.UndoReviseStationTypeRespDto;
import com.wicket.okrframework.integration.dto.UndoReviseStationTypeReqDto;
import com.wicket.okrframework.integration.dto.QueryGradeScopeListRespDto;
import com.wicket.okrframework.integration.dto.QueryGradeScopeListReqDto;
import com.wicket.okrbff.biz.service.dto.common.BffOrgGradeScopeDto;
import com.wicket.okrframework.integration.dto.QueryPositionGradeListRespDto;
import com.wicket.okrframework.integration.dto.QueryPositionGradeListReqDto;
import com.wicket.okrbff.biz.service.dto.common.BffNoArcpositionGradeDto;
import com.wicket.okrbff.biz.service.dto.common.BffArcOrgGradeScopeDto;
import com.wicket.okrframework.integration.dto.QueryGradeScopeListBorderRespDto;
import com.wicket.okrframework.integration.dto.QueryGradeScopeListBorderReqDto;
import com.wicket.okrframework.integration.dto.QueryStationTypeListBorderRespDto;
import com.wicket.okrframework.integration.dto.QueryStationTypeListBorderReqDto;
import com.wicket.okrbff.common.util.CommonFunctionHelper;
import com.wicket.okrframework.integration.dto.AddPositionGradeRespDto;
import com.wicket.okrframework.integration.dto.AddPositionGradeReqDto;
import com.wicket.okrframework.integration.dto.DeletePositionGradeRespDto;
import com.wicket.okrframework.integration.dto.DeletePositionGradeReqDto;
import com.wicket.okrframework.integration.dto.QueryPositionGradeListBorderRespDto;
import com.wicket.okrframework.integration.dto.QueryPositionGradeListBorderReqDto;
import com.wicket.okrbff.biz.service.dto.common.BffOrgPositionGradeDto;
import com.wicket.okrframework.integration.dto.BatchDeleteGradeScopeAndDeleteStepRespDto;
import com.wicket.okrframework.integration.dto.BatchDeleteGradeScopeAndDeleteStepReqDto;
import com.wicket.okrframework.integration.dto.QueryPostGradesListRespDto;
import com.wicket.okrframework.integration.dto.QueryPostGradesListReqDto;
import com.wicket.okrbff.biz.service.dto.common.BffPostGradesDto;
import com.wicket.okrframework.integration.dto.UpdateGradeScopeRespDto;
import com.wicket.okrframework.integration.dto.UpdateGradeScopeReqDto;
import com.wicket.okrframework.integration.dto.UpdatePositionGradeRespDto;
import com.wicket.okrframework.integration.dto.UpdatePositionGradeReqDto;
import com.wicket.okrframework.integration.dto.QueryStationSystemListRespDto;
import com.wicket.okrframework.integration.dto.QueryStationSystemListReqDto;
import com.wicket.okrbff.biz.service.dto.common.BffNoArcOrgGradeScopeDto;
import com.wicket.okrframework.integration.dto.BatchQueryGradeScopeRespDto;
import com.wicket.okrframework.integration.dto.BatchQueryGradeScopeReqDto;
import com.wicket.okrframework.integration.dto.BatchUpdatePositionGradeRespDto;
import com.wicket.okrframework.integration.dto.BatchUpdatePositionGradeReqDto;
import com.wicket.okrframework.integration.dto.OrgGradeScopeDto;

/**
 * @author ：
 * @date ：
 *
 *
 * @version 1.0
 */
@Api(value = "PostType", tags = {"PostType"})
@RestController
// @RequestMapping("/oms/postType/")
public class PostTypeController {

    @Autowired
    PostTypeService postTypeService;

    /**
     * B1-3批量更新岗位类型等级范围（管理）
     */
    @PostMapping("/oms/mgt/postType/batchUpdateStationGradeScope")
    @ApiOperation(value = "B1-3批量更新岗位类型等级范围（管理）", response = OkrResult.class)
    public OkrResult<BffBatchUpdateStationGradeScopeRespDto> batchUpdateStationGradeScope(@RequestBody(required = false) @Validated BffBatchUpdateStationGradeScopeReqDto reqDTO) {
        return OkrResult.success(postTypeService.batchUpdateStationGradeScope(reqDTO));
    }

    /**
   * B1-3返回上一步调整岗位类型（管理）
   * gen by moon at 8/10/2022, 3:38:15 AM
   */
    @PostMapping("/oms/mgt/postType/backToLastStepStationType")
    @ApiOperation(value = "B1-3返回上一步调整岗位类型（管理）", response = OkrResult.class)
    public OkrResult<BffBackToLastStepStationTypeRespDto> backToLastStepStationType(@RequestBody(required=false) @Validated BffBackToLastStepStationTypeReqDto reqDTO){
        return OkrResult.success(postTypeService.backToLastStepStationType(reqDTO));
    }

    /**
   * B1-3批量更新职务级别等级范围（管理）
   * gen by moon at 8/10/2022, 3:38:05 AM
   */
    @PostMapping("/oms/mgt/postType/batchUpdatePositionGradeScope")
    @ApiOperation(value = "B1-3批量更新职务级别等级范围（管理）", response = OkrResult.class)
    public OkrResult<BffBatchUpdatePositionGradeScopeRespDto> batchUpdatePositionGradeScope(@RequestBody(required=false) @Validated BffBatchUpdatePositionGradeScopeReqDto reqDTO){
        return OkrResult.success(postTypeService.batchUpdatePositionGradeScope(reqDTO));
    }

    /**
   * B1-3查询岗位类型等级范围列表-第四步（管理）
   * gen by moon at 8/10/2022, 3:38:03 AM
   */
    @PostMapping("/oms/mgt/postType/queryGradeScopeList")
    @ApiOperation(value = "B1-3查询岗位类型等级范围列表-第四步（管理）", response = OkrResult.class)
    public OkrResult<BffQueryGradeScopeListRespDto> queryGradeScopeList(@RequestBody(required=false) @Validated BffQueryGradeScopeListReqDto reqDTO){
        return OkrResult.success(postTypeService.queryGradeScopeList(reqDTO));
    }

    /**
   * B1-3批量查询职务级别等级范围列表（管理）
   * gen by moon at 8/10/2022, 3:37:58 AM
   */
    @PostMapping("/oms/mgt/postType/batchQueryGradeScope")
    @ApiOperation(value = "B1-3批量查询职务级别等级范围列表（管理）", response = OkrResult.class)
    public OkrResult<BffBatchQueryGradeScopeRespDto> batchQueryGradeScope(@RequestBody(required=false) @Validated BffBatchQueryGradeScopeReqDto reqDTO){
        return OkrResult.success(postTypeService.batchQueryGradeScope(reqDTO));
    }

    /**
     * B1-3查询可存档职务级别条件（管理）
     */
    @PostMapping("/oms/mgt/postType/queryArchivePositionGrade")
    @ApiOperation(value = "B1-3查询可存档职务级别条件（管理）", response = OkrResult.class)
    public OkrResult<BffQueryArchivePositionGradeRespDto> queryArchivePositionGrade(@RequestBody(required = false) @Validated BffQueryArchivePositionGradeReqDto reqDTO) {
        return OkrResult.success(postTypeService.queryArchivePositionGrade(reqDTO));
    }

    /**
   * B1-3查询岗位类型等级范围列表-第二步（管理）
   * gen by moon at 8/10/2022, 3:37:55 AM
   */
    @PostMapping("/oms/mgt/postType/queryStepTwoGradeScopeList")
    @ApiOperation(value = "B1-3查询岗位类型等级范围列表-第二步（管理）", response = OkrResult.class)
    public OkrResult<BffQueryStepTwoGradeScopeListRespDto> queryStepTwoGradeScopeList(@RequestBody(required=false) @Validated BffQueryStepTwoGradeScopeListReqDto reqDTO){
        return OkrResult.success(postTypeService.queryStepTwoGradeScopeList(reqDTO));
    }

    /**
   * B1-3查询岗位类型详情（管理边界）
   * gen by moon at 8/10/2022, 3:37:49 AM
   */
    @PostMapping("/oms/mgt/postType/queryStationTypeDetailBorder")
    @ApiOperation(value = "B1-3查询岗位类型详情（管理边界）", response = OkrResult.class)
    public OkrResult<BffQueryStationTypeDetailBorderRespDto> queryStationTypeDetailBorder(@RequestBody(required=false) @Validated BffQueryStationTypeDetailBorderReqDto reqDTO){
        return OkrResult.success(postTypeService.queryStationTypeDetailBorder(reqDTO));
    }

    /**
   * B1-3查询岗位体系
   * gen by moon at 8/10/2022, 3:37:47 AM
   */
    @PostMapping("/oms/postType/queryStationSystemList")
    @ApiOperation(value = "B1-3查询岗位体系", response = OkrResult.class)
    public OkrResult<BffQueryStationSystemListRespDto> queryStationSystemList(@RequestBody(required=false) @Validated BffQueryStationSystemListReqDto reqDTO){
        return OkrResult.success(postTypeService.queryStationSystemList(reqDTO));
    }

    /**
   * B1-3查询职务级别列表（边界）
   * gen by moon at 8/10/2022, 3:34:36 AM
   */
    @PostMapping("/oms/postType/queryPositionGradeListBorder")
    @ApiOperation(value = "B1-3查询职务级别列表（边界）", response = OkrResult.class)
    public OkrResult<BffQueryPositionGradeListBorderRespDto> queryPositionGradeListBorder(@RequestBody(required=false) @Validated BffQueryPositionGradeListBorderReqDto reqDTO){
        return OkrResult.success(postTypeService.queryPositionGradeListBorder(reqDTO));
    }

    /**
   * B1-3修改职务级别（管理）
   * gen by moon at 8/10/2022, 3:36:46 AM
   */
    @PostMapping("/oms/mgt/postType/updatePositionGrade")
    @ApiOperation(value = "B1-3修改职务级别（管理）", response = OkrResult.class)
    public OkrResult<BffUpdatePositionGradeRespDto> updatePositionGrade(@RequestBody(required=false) @Validated BffUpdatePositionGradeReqDto reqDTO){
        return OkrResult.success(postTypeService.updatePositionGrade(reqDTO));
    }

    /**
   * B1-3修改等级范围（管理）
   * gen by moon at 8/10/2022, 3:36:40 AM
   */
    @PostMapping("/oms/mgt/postType/updateGradeScope")
    @ApiOperation(value = "B1-3修改等级范围（管理）", response = OkrResult.class)
    public OkrResult<BffUpdateGradeScopeRespDto> updateGradeScope(@RequestBody(required=false) @Validated BffUpdateGradeScopeReqDto reqDTO){
        return OkrResult.success(postTypeService.updateGradeScope(reqDTO));
    }

    /**
   * B1-3查询岗位等级列表（管理）
   * gen by moon at 8/10/2022, 3:36:38 AM
   */
    @PostMapping("/oms/mgt/postType/queryPostGradesList")
    @ApiOperation(value = "B1-3查询岗位等级列表（管理）", response = OkrResult.class)
    public OkrResult<BffQueryPostGradesListRespDto> queryPostGradesList(@RequestBody(required=false) @Validated BffQueryPostGradesListReqDto reqDTO){
        return OkrResult.success(postTypeService.queryPostGradesList(reqDTO));
    }

    /**
   * B1-3初始化岗位类型（管理）
   * gen by moon at 8/10/2022, 3:35:33 AM
   */
    @PostMapping("/oms/mgt/postType/batchUpdateInitializeGradeScope")
    @ApiOperation(value = "B1-3初始化岗位类型（管理）", response = OkrResult.class)
    public OkrResult<BffBatchUpdateInitializeGradeScopeRespDto> batchUpdateInitializeGradeScope(@RequestBody(required=false) @Validated BffBatchUpdateInitializeGradeScopeReqDto reqDTO){
        return OkrResult.success(postTypeService.batchUpdateInitializeGradeScope(reqDTO));
    }

    /**
   * B1-3删除职务级别（管理）
   * gen by moon at 8/10/2022, 3:34:32 AM
   */
    @PostMapping("/oms/mgt/postType/deletePositionGrade")
    @ApiOperation(value = "B1-3删除职务级别（管理）", response = OkrResult.class)
    public OkrResult<BffDeletePositionGradeRespDto> deletePositionGrade(@RequestBody(required=false) @Validated BffDeletePositionGradeReqDto reqDTO){
        return OkrResult.success(postTypeService.deletePositionGrade(reqDTO));
    }

    /**
   * B1-3新增职务级别（管理）
   * gen by moon at 8/10/2022, 3:34:30 AM
   */
    @PostMapping("/oms/mgt/postType/addPositionGrade")
    @ApiOperation(value = "B1-3新增职务级别（管理）", response = OkrResult.class)
    public OkrResult<BffAddPositionGradeRespDto> addPositionGrade(@RequestBody(required=false) @Validated BffAddPositionGradeReqDto reqDTO){
        return OkrResult.success(postTypeService.addPositionGrade(reqDTO));
    }

    /**
   * B1-3查询岗位类型列表（边界）
   * gen by moon at 8/10/2022, 3:34:11 AM
   */
    @PostMapping("/oms/mgt/postType/queryStationTypeListBorder")
    @ApiOperation(value = "B1-3查询岗位类型列表（边界）", response = OkrResult.class)
    public OkrResult<BffQueryStationTypeListBorderRespDto> queryStationTypeListBorder(@RequestBody(required=false) @Validated BffQueryStationTypeListBorderReqDto reqDTO){
        return OkrResult.success(postTypeService.queryStationTypeListBorder(reqDTO));
    }

    /**
   * B1-3查询等级范围列表（边界）
   * gen by moon at 8/10/2022, 3:34:02 AM
   */
    @PostMapping("/oms/mgt/postType/queryGradeScopeListBorder")
    @ApiOperation(value = "B1-3查询等级范围列表（边界）", response = OkrResult.class)
    public OkrResult<BffQueryGradeScopeListBorderRespDto> queryGradeScopeListBorder(@RequestBody(required=false) @Validated BffQueryGradeScopeListBorderReqDto reqDTO){
        return OkrResult.success(postTypeService.queryGradeScopeListBorder(reqDTO));
    }

    /**
   * B1-3查询职务级别列表（管理）
   * gen by moon at 8/10/2022, 3:33:57 AM
   */
    @PostMapping("/oms/mgt/postType/queryPositionGradeList")
    @ApiOperation(value = "B1-3查询职务级别列表（管理）", response = OkrResult.class)
    public OkrResult<BffQueryPositionGradeListRespDto> queryPositionGradeList(@RequestBody(required=false) @Validated BffQueryPositionGradeListReqDto reqDTO){
        return OkrResult.success(postTypeService.queryPositionGradeList(reqDTO));
    }

    /**
   * B1-3查询岗位类型等级范围列表-第一步（管理）
   * gen by moon at 8/10/2022, 3:31:42 AM
   */
    @PostMapping("/oms/mgt/postType/queryStepOneGradeScopeList")
    @ApiOperation(value = "B1-3查询岗位类型等级范围列表-第一步（管理）", response = OkrResult.class)
    public OkrResult<BffQueryStepOneGradeScopeListRespDto> queryStepOneGradeScopeList(@RequestBody(required=false) @Validated BffQueryStepOneGradeScopeListReqDto reqDTO){
        return OkrResult.success(postTypeService.queryStepOneGradeScopeList(reqDTO));
    }

    /**
   * B1-3取消修订岗位类型（管理）--待
   * gen by moon at 8/10/2022, 3:31:40 AM
   */
    @PostMapping("/oms/mgt/postType/undoReviseStationType")
    @ApiOperation(value = "B1-3取消修订岗位类型（管理）--待", response = OkrResult.class)
    public OkrResult<BffUndoReviseStationTypeRespDto> undoReviseStationType(@RequestBody(required=false) @Validated BffUndoReviseStationTypeReqDto reqDTO){
        return OkrResult.success(postTypeService.undoReviseStationType(reqDTO));
    }

    /**
   * B1-3存档岗位类型（管理）
   * gen by moon at 8/10/2022, 3:31:37 AM
   */
    @PostMapping("/oms/mgt/postType/archiveStationType")
    @ApiOperation(value = "B1-3存档岗位类型（管理）", response = OkrResult.class)
    public OkrResult<BffArchiveStationTypeRespDto> archiveStationType(@RequestBody(required=false) @Validated BffArchiveStationTypeReqDto reqDTO){
        return OkrResult.success(postTypeService.archiveStationType(reqDTO));
    }

    /**
   * B1-3修订岗位类型（管理）
   * gen by moon at 8/10/2022, 3:30:06 AM
   */
    @PostMapping("/oms/mgt/postType/reviseStationType")
    @ApiOperation(value = "B1-3修订岗位类型（管理）", response = OkrResult.class)
    public OkrResult<BffReviseStationTypeRespDto> reviseStationType(@RequestBody(required=false) @Validated BffReviseStationTypeReqDto reqDTO){
        return OkrResult.success(postTypeService.reviseStationType(reqDTO));
    }

    /**
   * B1-3修改岗位类型（管理）
   * gen by moon at 8/10/2022, 3:29:59 AM
   */
    @PostMapping("/oms/mgt/postType/updateStationType")
    @ApiOperation(value = "B1-3修改岗位类型（管理）", response = OkrResult.class)
    public OkrResult<BffUpdateStationTypeRespDto> updateStationType(@RequestBody(required=false) @Validated BffUpdateStationTypeReqDto reqDTO){
        return OkrResult.success(postTypeService.updateStationType(reqDTO));
    }

    /**
   * B1-3删除岗位类型（管理）
   * gen by moon at 8/10/2022, 3:29:57 AM
   */
    @PostMapping("/oms/mgt/postType/deleteStationType")
    @ApiOperation(value = "B1-3删除岗位类型（管理）", response = OkrResult.class)
    public OkrResult<BffDeleteStationTypeRespDto> deleteStationType(@RequestBody(required=false) @Validated BffDeleteStationTypeReqDto reqDTO){
        return OkrResult.success(postTypeService.deleteStationType(reqDTO));
    }

    /**
   * B1-3新增岗位类型（管理）
   * gen by moon at 8/10/2022, 3:29:56 AM
   */
    @PostMapping("/oms/mgt/postType/addStationType")
    @ApiOperation(value = "B1-3新增岗位类型（管理）", response = OkrResult.class)
    public OkrResult<BffAddStationTypeRespDto> addStationType(@RequestBody(required=false) @Validated BffAddStationTypeReqDto reqDTO){
        return OkrResult.success(postTypeService.addStationType(reqDTO));
    }

    /**
   * B1-3查询岗位类型详情（管理）
   * gen by moon at 8/31/2022, 7:28:13 PM
   */
    @PostMapping("/oms/mgt/postType/queryStationTypeDetail")
    @ApiOperation(value = "B1-3查询岗位类型详情（管理）", response = OkrResult.class)
    public OkrResult<BffQueryStationTypeDetailRespDto> queryStationTypeDetail(@RequestBody(required=false) @Validated BffQueryStationTypeDetailReqDto reqDTO){
        return OkrResult.success(postTypeService.queryStationTypeDetail(reqDTO));
    }

    /**
   * B1-3查询岗位类型列表
   * gen by moon at 8/10/2022, 3:29:48 AM
   */
    @PostMapping("/oms/mgt/postType/queryStationTypeList")
    @ApiOperation(value = "B1-3查询岗位类型列表", response = OkrResult.class)
    public OkrResult<BffQueryStationTypeListRespDto> queryStationTypeList(@RequestBody(required=false) @Validated BffQueryStationTypeListReqDto reqDTO){
        return OkrResult.success(postTypeService.queryStationTypeList(reqDTO));
    }

    /**
   * B1-3批量存档等级范围(管理）
   * gen by moon at 8/10/2022, 3:35:31 AM
   */
    @PostMapping("/oms/mgt/postType/batchArchiveGradeScope")
    @ApiOperation(value = "B1-3批量存档等级范围(管理）", response = OkrResult.class)
    public OkrResult<BffBatchArchiveGradeScopeRespDto> batchArchiveGradeScope(@RequestBody(required=false) @Validated BffBatchArchiveGradeScopeReqDto reqDTO){
        return OkrResult.success(postTypeService.batchArchiveGradeScope(reqDTO));
    }

    /**
   * B1-3批量改岗位等级（管理）
   * gen by moon at 8/10/2022, 3:34:04 AM
   */
    @PostMapping("/oms/mgt/postType/batchUpdatePostGrades")
    @ApiOperation(value = "B1-3批量改岗位等级（管理）", response = OkrResult.class)
    public OkrResult<BffBatchUpdatePostGradesRespDto> batchUpdatePostGrades(@RequestBody(required=false) @Validated BffBatchUpdatePostGradesReqDto reqDTO){
        return OkrResult.success(postTypeService.batchUpdatePostGrades(reqDTO));
    }

    /**
   * B1-3查询管理模式职务级别列表(管理)(边界)
   * gen by moon at 8/10/2022, 3:36:53 AM
   */
    @PostMapping("/oms/mgt/postType/queryPositionGradeMgtListBorder")
    @ApiOperation(value = "B1-3查询管理模式职务级别列表(管理)(边界)", response = OkrResult.class)
    public OkrResult<BffQueryPositionGradeMgtListBorderRespDto> queryPositionGradeMgtListBorder(@RequestBody(required=false) @Validated BffQueryPositionGradeMgtListBorderReqDto reqDTO){
        return OkrResult.success(postTypeService.queryPositionGradeMgtListBorder(reqDTO));
    }
}
